#pragma once
#include "Texture2D.h"

namespace Graphics{
	class DX11Texture2D : public Texture2D{
	public:
		DX11Texture2D(std::string &filename, ShaderResourceSlot slot, RenderContext* handle);
		DX11Texture2D(int width, int height, int multisample, ShaderResourceSlot slot, TextureFormat format, RenderContext* handle);
		DX11Texture2D(ID3D11Texture2D* texture,int width, int height, int multisample, TextureFormat format, RenderContext* handle);
		~DX11Texture2D();

		void setTexture(RenderContext* context);

		ID3D11Texture2D* getTexture() { return m_texSource; }
		DXGI_FORMAT getFormat();
	private:
		ID3D11ShaderResourceView* m_texture;
		ID3D11Texture2D *m_texSource;
	};
};

typedef boost::shared_ptr<Graphics::DX11Texture2D> DX11Texture2DPtr;